package com.sinosoft.ptas.service;

import java.util.List;

import com.sinosoft.framework.core.common.exception.BusinessException;
import com.sinosoft.ptas.entity.NoticeEntity;
import com.sinosoft.ptas.entity.OrganizationNoticeRefEntity;

/**
 * server层接口定义
 * @author zhangxiaolong
 *
 */
public interface NoticeService {

		/**
		 * 添加公告
		 * @param noticeEntity
		 * @return id
		 */
		public String createNotice(NoticeEntity noticeEntity);
		
		/**
		 * 根据公告编号删除公告
		 * 先删除公告和司局的对应关系，再删除公告
		 * @param id
		 */
		public void deleteNoticeByid(String id) throws BusinessException;
		
		/**
		 * 根据公告编号更新公告
		 * @param noticeEntity
		 */
		public void updateNotice(NoticeEntity noticeEntity);
		
		/**
		 * 根据公告编号查询公告
		 * @param id
		 * @return 公告实体
		 */
		public NoticeEntity retieveNoticeByid(String id);
		
		/**
		 * 查询全部公告并降序排序
		 * @return 公告集合
		 */
		public List<NoticeEntity> retiveNotices(NoticeEntity noticeEntity);
		
		/**
		 * 批量创建公告与司局的对应关系
		 * 一个公告对应多个司局
		 * @param noticeId
		 * @param orgIds
		 * @param organizationNoticeRefEntity接收时间切面
		 */
		public void createOrgNoticeRef(OrganizationNoticeRefEntity organizationNoticeRefEntity,String noticeId,String[] orgIds) throws BusinessException;
		
		/**
		 * 检索全部公告和司局的对应关系
		 * @return 公告与司局的对应关系实体集合
		 */
		public List<OrganizationNoticeRefEntity> retrieveOrgNoticeRefs();
		
		/**
		 * 更新公告点击量
		 * 一个司局点击一次   计算为一个
		 * @param noticeId
		 * @throws BusinessException
		 */
		public void updateNoticeClickNumAndState(String noticeId,String code) throws BusinessException;
		
		/**
		 * 根据公告编号删除公告与司局的对应关系
		 * @param noticeId
		 */
		public void deleteOrgNoticeRefByNId(String noticeId) throws BusinessException;
		
		/**
		 * 省局查看公告  根据省局的编号查询
		 * @param orgId
		 * @return 公告实体集合
		 */
		public List<NoticeEntity> retiveNoticesByOrgId(String orgId);
		
		/**
		 * 查看未读公告
		 * @param orgId
		 * @return 公告条数
		 */
		public int retrieveNoReadNoticeByOrgId(String orgId);
}
